package com.mr.flowbean.partition;

import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Partitioner;

/*
 *  排序器：排序器影响的是排序的速度（效率），QuickSorter
 *  比较器：比较器影响的是排序的结果
 *
 *  KEY, VALUE：为Mapper输出的key-value类型
 */

public class MyPartitioner extends Partitioner<Text, FlowBean>{

	// 计算分区
	// numPartitions为总的分区数，也就是reduceTask的数量
	// 分区号必须为int型的值，且必须符合 0 <= 分区号 < numPartitions
	@Override
	public int getPartition(Text key, FlowBean value, int numPartitions) {

		// 手机号前缀
		String prefix = key.toString().substring(0,3);

		int partitionNum = 0;

		switch (prefix) {
			case "136":
				partitionNum = numPartitions - 1;
				break;
			case "137":
				partitionNum = numPartitions - 2;
				break;
			case "138":
				partitionNum = numPartitions - 3;
				break;
			case "139":
				partitionNum = numPartitions - 4;
				break;

			default:
				break;
		}

		return partitionNum;

	}

}
